Imports System.Data.SqlClient
Imports System.Drawing
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraEditors
Imports DevExpress.XtraScheduler
Imports DevExpress.XtraScheduler.UI
Imports DevExpress.XtraEditors.Repository
Imports System.IO

'--- Created Date On : 30-Oct-2010 (Nirmal)

Public Class frmMedicalVocabulary
  Dim mstrMode As String
  Public blnAdd As Boolean, blnEdit As Boolean, blnDelete As Boolean, blnLocked As Boolean
  Dim mlngRecordID As Long
  Dim blnUnload As Boolean
  Dim mblnChanged As Boolean
  Dim mblnActivate As Boolean
  Dim mblnExpanded As Boolean = False
  Dim mblnAutoSize As Boolean = True
  Dim gridView1 As Views.Grid.GridView
  Dim mblnCancelDisplay As Boolean
  Public mstrMenuList(3)() As String    'Keeps menu details (Jagged Arrays)


  Private Sub initializeMenu()
    Try
      'Middle -1 Group
      'Middle -2 Locked

      'Last -1 Checked

      mstrMenuList(0) = New String() {"Main", 1, 0, "Main"}

      mstrMenuList(1) = New String() {"Medical Vocabularies", 2, 1, "MedicalVocabulary"}
      mstrMenuList(2) = New String() {"Is Imported", 2, 1, "case when IsImported=1 then 'Yes' else 'No' end"}

    Catch ex As Exception
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
          Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Private Sub frmMedicalVocabulary_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
    Try
      If mblnActivate = True Then
        mblnActivate = False

        pbRecords.Visible = True
        pbRecords.BringToFront()
        Application.DoEvents()
        pbRecords.Position = 20
        Call PopulateData()
        pbRecords.Position = 100
        pbRecords.Visible = False
        grdRecords.Focus()
      End If

    Catch ex As Exception
      pbRecords.Visible = False
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
          Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Private Sub frmMedicalVocabulary_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    Try

      Dim intUnload As DialogResult

      If mblnChanged = True And mstrMode <> "" Then
        intUnload = MessageBox.Show("You have not saved your changes to the record. Do you want to save your changes now?", gstrMessage, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
        If intUnload = Windows.Forms.DialogResult.Cancel Then
          e.Cancel = True : Exit Sub
        ElseIf intUnload = Windows.Forms.DialogResult.Yes Then
          blnUnload = True
          If blnSaveRecords() = False Then
            e.Cancel = True
            blnUnload = False
            Exit Sub
          End If
          mblnChanged = False
        End If
      End If
      blnUnload = False

    Catch ex As Exception
      blnUnload = False
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
          Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Private Sub frmMedicalVocabulary_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    mblnCancelDisplay = True
    If blnKeyTrap(e.KeyCode, Me, True, grdRecords) = True Then mblnCancelDisplay = False : Exit Sub
    mblnCancelDisplay = False

    If e.KeyCode = Keys.F5 Then
      gdvRecords_FocusedRowChanged(Nothing, Nothing)
    End If

    pbRecords.Visible = False
  End Sub

  Private Sub frmMedicalVocabulary_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Try

      Call SetImageControl(Me)
      Me.Icon = System.Drawing.Icon.FromHandle(CType(mdiMain.imgFormIcons.Images(2), Bitmap).GetHicon())
      Call btnExpand_Click(Me, e)
      Call GetAccessPermission(Me, "frmMedicalVocabulary")
      Call initializeMenu()
      Call setPBRecords(Me, pbRecords)
      mblnActivate = True
      mblnChanged = False

    Catch ex As Exception
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
          Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Public Sub PopulateData()
    Dim dsRecords As New DataSet   'For populating data in XtraGrid
    Dim strQuery As String = ""
    Dim strTemp As String = ""
    Dim intCtr As Int16

    Try
      pbRecords.Position = 40 : Application.DoEvents()

      For intCtr = 0 To mstrMenuList.GetUpperBound(0) - 1
        If mstrMenuList(intCtr)(1) <> 1 And mstrMenuList(intCtr)(2) <> 0 Then
          strTemp = mstrMenuList(intCtr)(3)
          strQuery = strQuery & "," & strTemp & " [" & mstrMenuList(intCtr)(0) & "]"
        End If
      Next

      strQuery = "select MedicalVocabularyID [record_id]" & strQuery & " From tblMedicalVocabulary Order By MedicalVocabulary "

      dsRecords = FillDataSet(strQuery)
      'Bind the grid control to the data source
      gdvRecords.Columns.Clear()

      With grdRecords
        .BeginUpdate()
        .DataSource = dsRecords.Tables(0)
        .EndUpdate()
        .ForceInitialize()
      End With

      With gdvRecords
        'Primary Key Field
        .Columns("record_id").Visible = False
        .Columns("record_id").OptionsColumn.ShowInCustomizationForm = False
        .Columns("Is Imported").Visible = False
        .Columns("Is Imported").OptionsColumn.ShowInCustomizationForm = False
        .ExpandAllGroups()
        .BestFitColumns()
      End With

      dsRecords.Dispose()
      pbRecords.Position = 80 : Application.DoEvents()

      'To set row count
      Call gdvRecords_ColumnFilterChanged(Nothing, Nothing)

    Catch ex As Exception
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
          Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Public Sub btnExpand_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExpand.Click
    If mblnExpanded = True Then
      mblnExpanded = False
      btnExpand.Image = mdiMain.imgEditIcons.Images(0)
      grdRecords.Width = 197
      Call btnCancel_Click(Nothing, Nothing)
    Else
      mblnExpanded = True
      btnExpand.Image = mdiMain.imgEditIcons.Images(1)
      grdRecords.Width = 522 : grdRecords.BringToFront()
      If gdvRecords.RowCount > 0 Then mlngRecordID = lngGetSelectID(gdvRecords, "record_id")
    End If

    gdvRecords.OptionsView.ColumnAutoWidth = True
    grdRecords.Focus()
  End Sub

  Private Sub DisplayData()
    'Display data in form fields.
    Dim dsTemp As DataSet
    Try

      dsTemp = FillDataSet("select * from tblMedicalVocabulary where MedicalVocabularyID=" & mlngRecordID)

      With dsTemp.Tables(0)
        If .Rows.Count > 0 Then
          txtMedicalVocabulary.Text = Trim(.Rows(0).Item("MedicalVocabulary") & "")
        End If
      End With

      dsTemp.Dispose()

    Catch ex As Exception
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
           Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Public Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.Click
    Call EnableDisableControls(True)

    If mstrMode = "Add" Then
      If gdvRecords.RowCount > 0 Then
        mlngRecordID = lngGetSelectID(gdvRecords, "record_id")
        DisplayData()
      Else
        ClearControls()
        btnEdit.Enabled = False : btnDelete.Enabled = False : btnPreview.Enabled = False
      End If
    Else
      If gdvRecords.RowCount = 0 Then
        ClearControls()
        btnEdit.Enabled = False : btnDelete.Enabled = False : btnPreview.Enabled = False
      Else
        DisplayData()
      End If
    End If

    Me.Text = "Medical Vocabularies"
    mstrMode = ""
    mblnChanged = False
  End Sub

  Private Sub EnableDisableControls(ByVal blnEnable As Boolean)
    If blnAdd = True Then btnAdd.Enabled = blnEnable
    If blnEdit = True Then btnEdit.Enabled = blnEnable
    If blnDelete = True Then btnDelete.Enabled = blnEnable
    btnImport.Enabled = blnEnable
    btnSave.Enabled = Not (blnEnable) : btnCancel.Enabled = Not (blnEnable)

    grbControls.Enabled = Not (blnEnable)
  End Sub

  Private Sub gdvRecords_ColumnFilterChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gdvRecords.ColumnFilterChanged
    gdvRecords.Columns(1).SummaryItem.SetSummary(DevExpress.Data.SummaryItemType.Count, "Total {0} Record(s)")

    Dim lngTemp As Long = lngGetSelectID(gdvRecords, "record_id")
    If mlngRecordID <> lngTemp Or btnCancel.Enabled = True Then
      gdvRecords_FocusedRowChanged(Nothing, Nothing)
    End If
  End Sub

  Private Sub gdvRecords_CustomDrawRowIndicator(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs) Handles gdvRecords.CustomDrawRowIndicator
    SetRowIndicator(e)
  End Sub

  Private Sub gdvRecords_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles gdvRecords.DoubleClick
    If btnEdit.Enabled = True Then
      Call btnEdit_Click(Nothing, Nothing)
    End If
  End Sub

  Private Sub gdvRecords_FocusedRowChanged(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles gdvRecords.FocusedRowChanged
    Try
      If mblnCancelDisplay = True Then Exit Sub

      mlngRecordID = lngGetSelectID(gdvRecords, "record_id")

      If gdvRecords.RowCount > 0 Then
        btnEdit.Enabled = blnEdit : btnDelete.Enabled = blnDelete
        btnPreview.Enabled = True
      Else
        ClearControls()
        btnEdit.Enabled = False : btnDelete.Enabled = False : btnPreview.Enabled = False
      End If
      btnAdd.Enabled = blnAdd

      If mlngRecordID = 0 Then Exit Sub

      If mblnExpanded = True Then Exit Sub

      Call btnCancel_Click(Nothing, Nothing)

    Catch ex As Exception
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
           Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Private Sub gdvRecords_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles gdvRecords.GotFocus
    If btnCancel.Enabled = True And Me.Visible = True Then Call btnCancel_Click(Nothing, Nothing)
  End Sub

  Private Sub gdvRecords_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles gdvRecords.KeyDown
    Try

      If e.KeyCode = Keys.Delete And btnDelete.Enabled = True Then
        Call btnDelete_Click(Nothing, Nothing)
      ElseIf e.KeyCode = Keys.Return And btnDelete.Enabled = True Then
        Call gdvRecords_DoubleClick(Nothing, Nothing)
      ElseIf e.KeyCode = Keys.Escape Then
        Call btnClose_Click(Nothing, Nothing)
      End If

    Catch ex As Exception
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
           Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Private Sub btnClose_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnClose.Click
    'If mblnActivate = False Then
    '    If mblnExpanded = False Then btnExpand_Click(Nothing, Nothing) Else Me.Close()
    'End If
    Me.Close()
  End Sub

  Public Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click
    Try
      If mblnExpanded = True Then btnExpand_Click(Nothing, Nothing)
      Call EnableDisableControls(False)
      Call ClearControls()
      mstrMode = "Add"
      mlngRecordID = 0
      Me.Text = "Medical Vocabularies [Add]"
      txtMedicalVocabulary.Focus()
    Catch ex As Exception
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
           Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Private Function IsValidEntry() As Boolean
    'Here check valid entry of fields
    Dim strMsg As String = ""
    IsValidEntry = False

    If IsDBNullOrNothing(txtMedicalVocabulary.Text) Then
      strMsg = "Please enter Medical Vocabulary"
      txtMedicalVocabulary.Focus()
    End If

    If Trim(strMsg) <> "" Then
      IsValidEntry = False
      MessageBox.Show(strMsg, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    Else
      IsValidEntry = True
    End If
  End Function

  Private Function blnSaveRecords() As Boolean
    Dim blnIsTransactionOpen As Boolean
    Dim strQuery As String
    Try
      blnSaveRecords = False

      If IsValidEntry() = False Then
        Exit Function
      End If



      If (blnUnload = False) Then
        If (MessageBox.Show("Are you sure to " & IIf(mstrMode = "Add", "add", "modify") & " this procedure", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = System.Windows.Forms.DialogResult.No) Then
          txtMedicalVocabulary.Focus()
          Exit Function
        End If
      End If

      gtrnWebPlusMed = gconWebPlusMed.BeginTransaction
      blnIsTransactionOpen = True
      If (mstrMode = "Add") Then
        strQuery = "'" & Replace(Trim(txtMedicalVocabulary.Text), "'", "''") & "'"
        strQuery = strQuery & ",0" 'Imported
        strQuery = strQuery & ",'" & Strings.Left(Trim(txtMedicalVocabulary.Text), 1) & "'"

        InsertintoTable("tblMedicalVocabulary", strQuery)
      ElseIf (mstrMode = "Edit") Then

        strQuery = "MedicalVocabulary='" & Replace(Trim(txtMedicalVocabulary.Text), "'", "''") & "'"
        strQuery = strQuery & ",Alpha='" & Strings.Left(Trim(txtMedicalVocabulary.Text), 1) & "'"
        UpdateTable("tblMedicalVocabulary", strQuery, "MedicalVocabularyID=" & mlngRecordID)
      End If

      blnSaveRecords = True

      gtrnWebPlusMed.Commit()
      blnIsTransactionOpen = False

    Catch ex As Exception
      If blnIsTransactionOpen = True Then
        gtrnWebPlusMed.Rollback()
      End If
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
          Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Function

  Public Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
    Dim lngTemp As Long, lngRowID As Long
    Try
      If mblnChanged = False Then
        btnCancel_Click(Nothing, Nothing)
        Exit Sub
      End If

      If blnSaveRecords() = False Then Exit Sub
      If mstrMode = "Add" Then
        mlngRecordID = GetId("tblMedicalVocabulary")
      End If

      lngTemp = mlngRecordID

      pbRecords.Visible = True
      pbRecords.BringToFront()
      Application.DoEvents()
      pbRecords.Position = 20

      gdvRecords.OptionsSelection.EnableAppearanceFocusedRow = False
      gdvRecords.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.None
      mblnCancelDisplay = True
      Call PopulateData()
      mblnCancelDisplay = False

      pbRecords.Position = 95
      If gdvRecords.RowCount > 0 Then
        lngRowID = LocateRowBySingleValue(grdRecords, lngTemp)
        gdvRecords.FocusedRowHandle = lngRowID
        If lngRowID = 0 Then gdvRecords_FocusedRowChanged(Nothing, Nothing)
      Else
        Call btnCancel_Click(Nothing, Nothing)
      End If
      gdvRecords.OptionsSelection.EnableAppearanceFocusedRow = True
      gdvRecords.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus

      pbRecords.Position = 100
      pbRecords.Visible = False
      'End If
    Catch ex As Exception
      pbRecords.Visible = False
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
           Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Public Sub btnPreview_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPreview.Click
    ShowGridPreview(grdRecords, Me.Text)
  End Sub

  Public Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click
    Try

      If mblnExpanded = True Then btnExpand_Click(Nothing, Nothing)

      Call EnableDisableControls(False)
      mblnChanged = False
      mstrMode = "Edit"
      Me.Text = "Medical Vocabularies [Edit]"
      txtMedicalVocabulary.Focus()
    Catch ex As Exception
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
           Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Private Sub gdvRecords_ShowGridMenu(ByVal sender As Object, ByVal e As DevExpress.XtraGrid.Views.Grid.GridMenuEventArgs) Handles gdvRecords.ShowGridMenu
    If e.MenuType = DevExpress.XtraGrid.Views.Grid.GridMenuType.Column Then
      Dim mainMenu As DevExpress.XtraGrid.Menu.ViewMenu = CType(e.Menu, DevExpress.XtraGrid.Menu.ViewMenu)
      Dim mainItem As New DevExpress.Utils.Menu.DXMenuItem("Column Auto Width", New EventHandler(AddressOf MainMenuItem))
      mainItem.BeginGroup = True
      mainItem.Tag = e.Menu
      mainMenu.Items.Add(mainItem)
      mainItem.Image = IIf(mblnAutoSize = True, mdiMain.imgEditIcons.Images(13), Nothing)
    End If
  End Sub

  Private Sub MainMenuItem(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Dim Item As DevExpress.Utils.Menu.DXMenuItem = CType(sender, DevExpress.Utils.Menu.DXMenuItem)
    Dim menu As DevExpress.XtraGrid.Menu.GridViewMenu = CType(Item.Tag, DevExpress.XtraGrid.Menu.GridViewMenu)
    mblnAutoSize = Not (mblnAutoSize)
    gdvRecords.OptionsView.ColumnAutoWidth = (mblnAutoSize = True)
    If gdvRecords.OptionsView.ColumnAutoWidth = False Then gdvRecords.BestFitColumns()
  End Sub

  Private Sub txtMedicalVocabulary_EditValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtMedicalVocabulary.EditValueChanged
    mblnChanged = True
  End Sub

  Private Sub txtMedicalVocabulary_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtMedicalVocabulary.GotFocus
    sender.SelectAll()
  End Sub

  Private Sub ClearControls()
    Try
      Call Clearfields(grbControls)

    Catch ex As Exception
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
           Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Public Sub SetRowFromOutside(ByVal RecID As Long)
    Dim lngRowID As Long
    gdvRecords.OptionsSelection.EnableAppearanceFocusedRow = False
    gdvRecords.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.None
    lngRowID = LocateRowBySingleValue(grdRecords, RecID)
    gdvRecords.FocusedRowHandle = lngRowID
    If lngRowID = 0 Then gdvRecords_FocusedRowChanged(Nothing, Nothing)
    gdvRecords.OptionsSelection.EnableAppearanceFocusedRow = True
    gdvRecords.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus
  End Sub

  Private Sub btnDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDelete.Click
    Dim blnTrnasaction As Boolean

    Try
      If gdvRecords.GetFocusedRowCellValue("Is Imported") = "Yes" Then
        MessageBox.Show("Imported record can not be deleted.", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Exit Sub
      End If

      If MessageBox.Show("Are you sure you want to permanently delete this record", gstrMessage, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
        gtrnWebPlusMed = gconWebPlusMed.BeginTransaction
        blnTrnasaction = True
        Call DeleteFromTable("tblMedicalVocabulary", "MedicalVocabularyID=" & mlngRecordID)
        gtrnWebPlusMed.Commit()
        blnTrnasaction = False
        MessageBox.Show("Record deleted.", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Information)
        SendKeys.Send("{F5}")
      End If


    Catch ex As Exception
      If blnTrnasaction = True Then
        gtrnWebPlusMed.Rollback()
      End If
      MessageBox.Show("Record in use" & vbCrLf & "Cannot delete", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
           Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Private Sub btnImport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImport.Click
    Try
      Dim intUnload As DialogResult
      Dim strPath As String = Application.StartupPath & "\"
      Dim ofdlg As New OpenFileDialog()
      ofdlg.InitialDirectory = strPath
      ofdlg.Filter = "txt files (*.txt)|*.txt"
      intUnload = ofdlg.ShowDialog()
      If intUnload = Windows.Forms.DialogResult.OK Then
        strPath = ofdlg.FileName
        Application.DoEvents()
        Call ImportMedicalVocabulary(strPath)
      End If
    Catch ex As Exception
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      Call AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
           Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    End Try
  End Sub

  Private Sub ImportMedicalVocabulary(ByVal strPath As String)
    Dim blnIsTransactionOpen As Boolean
    Dim sr As StreamReader = Nothing
    Try
      pbRecords.Visible = True
      pbRecords.BringToFront()
      pbRecords.Position = 20 : Application.DoEvents()

      Dim fs As FileStream = File.Open(strPath, FileMode.Open, FileAccess.Read)
      Dim Str As String
      Dim strQuery As String
      sr = New StreamReader(fs)
      If sr.EndOfStream Then
        MessageBox.Show("The file you have selected is empty...", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Exit Sub
      End If
      gtrnWebPlusMed = gconWebPlusMed.BeginTransaction
      blnIsTransactionOpen = True
      pbRecords.Position = 30 : Application.DoEvents()
      Do While Not sr.EndOfStream
        Str = sr.ReadLine
        strQuery = "'" & Replace(Trim(Str), "'", "''") & "'"
        If strQuery = "''" Then Continue Do
        strQuery = strQuery & ",1"
        strQuery = strQuery & ",'" & Strings.Left(Trim(Str), 1) & "'"

        InsertintoTable("tblMedicalVocabulary", strQuery)
      Loop
      gtrnWebPlusMed.Commit()
      blnIsTransactionOpen = False
      Call PopulateData()
      pbRecords.Position = 100
      pbRecords.Visible = False
      MessageBox.Show("Successfully imported...", gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Information)
    Catch ex As Exception
      If blnIsTransactionOpen = True Then
        gtrnWebPlusMed.Rollback()
      End If
      MessageBox.Show(ex.Message, gstrMessage, MessageBoxButtons.OK, MessageBoxIcon.Error)
      AddErrorLog("Error " & Err.Number & " (" & Err.Description & ") in Procedure " & _
          Reflection.MethodBase.GetCurrentMethod.Name & " Of " & Me.Name)
    Finally
      pbRecords.Visible = False
      sr.Close()
      Err.Clear()
    End Try
  End Sub
End Class
